#ifndef LOG_AUDIT_H
#define LOG_AUDIT_H

#include <stdio.h>
#include <stdint.h>
#include <time.h>

// 日志级别
typedef enum {
    LOG_LEVEL_DEBUG,    // 调试信息
    LOG_LEVEL_INFO,     // 一般信息
    LOG_LEVEL_WARNING,  // 警告
    LOG_LEVEL_ERROR,    // 错误
    LOG_LEVEL_CRITICAL  // 严重错误
} log_level_t;

// 审计事件类型
typedef enum {
    AUDIT_EVENT_LOGIN,         // 用户登录
    AUDIT_EVENT_LOGOUT,        // 用户登出
    AUDIT_EVENT_FILE_UPLOAD,   // 文件上传
    AUDIT_EVENT_FILE_DOWNLOAD, // 文件下载
    AUDIT_EVENT_FILE_DELETE,   // 文件删除
    AUDIT_EVENT_AUTH_FAILED,   // 认证失败
    AUDIT_EVENT_ACCESS_DENIED, // 访问拒绝
    AUDIT_EVENT_SYSTEM         // 系统事件
} audit_event_t;

// 初始化日志系统
int log_init(const char *log_file);

// 关闭日志系统
void log_close(void);

// 记录日志
int log_message(log_level_t level, const char *format, ...);

// 记录审计事件
int log_audit_event(audit_event_t event_type, 
                    uint32_t user_id, 
                    const char *username, 
                    const char *resource,
                    const char *details);

// 设置日志级别
void log_set_level(log_level_t level);

// 获取当前日志级别
log_level_t log_get_level(void);

#endif /* LOG_AUDIT_H */
